class Properties(object):

    def __init__(self, fileName):
        self.fileName = fileName
        self.properties = {}
        self.properties2 = {}

    def __getDict(self, strName, dictName, value):
        if (strName.find('.') > 0):
            k = strName.split('.')[0]
            dictName.setdefault(k, {})
            return self.__getDict(strName[len(k) + 1:], dictName[k], value)
        else:
            dictName[strName] = value
            return

    def getProperties(self):
        """
        把所有的属性拆分成树形字典
        :return:
        """
        try:
            pro_file = open(self.fileName, 'r')
            for line in pro_file.readlines():
                line = line.strip().replace('\n', '')
                if line.find("#") != -1:
                    line = line[0:line.find('#')]
                if line.find('=') > 0:
                    strs = line.split('=')
                    strs[1] = line[len(strs[0]) + 1:]
                    self.__getDict(strs[0].strip(), self.properties, strs[1].strip())
        except Exception as e:
            raise e
        else:
            pro_file.close()
        return self.properties

    def getPropertiesFlat(self):
        """
        把所有的属性一级字典
        :return:
        """
        try:
            pro_file = open(self.fileName, 'r')
            for line in pro_file.readlines():
                line = line.strip().replace('\n', '')
                if line.find("#") != -1:
                    line = line[0:line.find('#')]
                if line.find('=') > 0:
                    strs = line.split('=')
                    strs[1] = line[len(strs[0]) + 1:]
                    # self.__getDict(strs[0].strip(), self.properties, strs[1].strip())
                    self.properties2[strs[0].strip()] = strs[1].strip()
        except Exception as e:
            raise e
        else:
            pro_file.close()
        return self.properties2


if __name__ == '__main__':

    dictProperties = Properties("config.properties").getProperties()
    dictProperties2 = Properties("config.properties").getPropertiesFlat()

    print(dictProperties)
    print(dictProperties2)
    print(dictProperties2["emas.server"])

